package com.qdc.datacenters.service;

import com.qdc.datacenters.domain.entity.ChatContactMsg;
import com.qdc.datacenters.domain.entity.ChatContactMsgAttachment;
import com.qdc.datacenters.domain.query.chatmsg.ChatMsgListQuery;
import com.qdc.datacenters.domain.query.chatmsg.ChatMsgQuery;
import com.qdc.datacenters.domain.vo.chatmsg.*;

import java.util.List;

/**
 * 会话消息(ChatContactMsg)表服务接口
 *
 * @author danmo
 * @since 2024-02-28 17:24:22
 */
public interface IChatContactMsgService extends IBaseService<ChatContactMsg> {

    /**
     * 获取员工列表
     * @param query
     * @return
     */
    List<ChatMsgUserListVo> getUserMsgList(ChatMsgListQuery query);

    /**
     * 获取客户列表
     * @param query
     * @return
     */
    List<ChatMsgCustomerListVo> getCustomerMsgList(ChatMsgListQuery query);

    /**
     * 获取群聊列表
     * @param query
     * @return
     */
    List<ChatMsgRoomListVo> getRoomMsgList(ChatMsgListQuery query);

    /**
     * 根据员工获取外部好友列表
     * @param query
     * @return
     */
    List<ChatMsgExCustomerVo> getExternalCustomerList(ChatMsgListQuery query);

    /**
     * 根据员工获取内部好友列表
     * @param query
     * @return
     */
    List<ChatMsgInCustomerVo> getInternalCustomerList(ChatMsgListQuery query);


    /**
     * 根据员工获取外部群列表
     * @param query
     * @return
     */
    List<ChatMsgGroupVo> getExternalGroupList(ChatMsgListQuery query);

    /**
     * 根据员工获取内部群列表
     * @param query
     * @return
     */
    List<ChatMsgGroupVo> getInternalGroupList(ChatMsgListQuery query);

    /**
     * 根据客户获取员工列表
     * @param query
     * @return
     */
    List<ChatMsgCustomerUserVo> getCustomerUserList(ChatMsgListQuery query);

    /**
     * 获取会话内容列表
     * @param query
     * @return
     */
    List<ChatContactMsgVo> getChatMsgList(ChatMsgQuery query);

    ChatContactMsgAttachment getAttachmentByMd5(String md5);
    void saveAttachment(ChatContactMsgAttachment msgAttachment);
}

